As an increasing number of applications and services are being made available over networks such as the Internet, an increasing number of content, application, and/or service providers are turning to technologies such as cloud computing. Cloud computing, in general, is an approach to providing access to electronic resources through services, such as Web services, where the hardware and/or software used to support those services is dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software needed.
In these environments, it may be difficult for a cloud computing provider or operator to ascertain the tasks and/or availability requirements for a widely disparate and/or independent customer base. As complexity and/or needed computing power increases over time, so does the incidence of events requiring updates to the computing resources used to provide that computing power. Such updates may include patching of security flaws, software bug fixes and the like. When such resources and associated software are shared amongst a plurality of simultaneously connecting customers via hypervisors or other types of virtualization software layers, interruption of the resources to install such updates may be undesirable or otherwise difficult to coordinate without significantly impacting customer experience. Furthermore, certain types of updates may need to be performed at the hardware level, such as a processor's microcode, in order to fix potential software bugs or security flaws.